﻿#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDomElement>
#include <QTreeWidgetItem>
#include <QHash>
#include <QJsonObject>
#include "ccommomdata.h"
#include "caddnode.h"
#include "cshowtreewidget.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    //打开xml文件的展示
    void showXml(QDomElement& xml);
    //打开json文件时的展示
    void showJson(QJsonObject& obj);
    //填充QTreeWidgetItem的信息
    void fillItemInfo(QTreeWidgetItem *pItem, SItemInfo sItemInfo);
    //保存文件时xml的抽取函数
    void appendXml(QDomDocument& doc, QDomElement &rootEmt, SItemInfo &sItemInfo);
    //保存文件时json的抽取函数
    void appendJson(QJsonObject& obj, SItemInfo &sItemInfo);
    void fillStructInfo(QTreeWidgetItem *pItem, SItemInfo &sItemInfo);

private slots:
    void on_openBtn_clicked();
    void on_saveBtn_clicked();
    void on_fileShowTreeWdt_customContextMenuRequested(const QPoint &pos);
    //右键添加节点
    void addNodeItem();
    //添加节点返回的信息
    void getAddItemInfo(SItemInfo sItemInfo);

private:
    Ui::Widget *ui;

    QTreeWidgetItem *m_pCurrItem;
    SItemInfo m_sItemInfo;
    CAddNode *m_pAddNode;
    QHash<QTreeWidgetItem*, QString> m_hashItem; //存储根节点，只让在根节点上添加一级节点，暂时不允许在一级节点上添加
};

#endif // WIDGET_H
